package com.fg.cloud.manager.mapper.agency;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.fg.cloud.manager.entry.agency.AgencyAreaEntity;
import com.fg.cloud.manager.entry.agency.vo.AgencyAreaVo;
import com.fg.cloud.manager.mapper.BaseMapper;

/**
 * 经销商-区域
 * @author around
 * @date 2017-6-22
 */
public interface AgencyAreaMapper extends BaseMapper {
	
	/**
	 * Description:批量更新移动区域的信息
	 * @param oldNumber	旧的上级编码
	 * @param newNumber	新的上级编码
	 * @param matchNumber	匹配部分编码=oldNumber_id
	 * @return int
	 * @author around
	 * @date 2017年9月27日下午2:10:17
	 */
	int batchUpdateLowerArea(@Param("oldNumber")String oldNumber, 
			@Param("newNumber")String newNumber, @Param("matchNumber")String matchNumber);
	
    int deleteByPrimaryKey(Long id);
    
    /**
      * Description:删除区域时删除用户区域
      * @param areaId
      * @return
      * @author shaoqiping
      * @date 2017年9月7日下午4:09:52
    */
    int deleteUserArea(Long areaId);
    /**
      * Description:批量插入
      * @param userId
      * @param areaId
      * @return
      * @author shaoqiping
      * @date 2017年9月7日上午10:53:51
    */
    int batchInsert(@Param("userId")Long userId,@Param("areaIds")Long[] areaIds);
    /**
      * Description:删除旧元素
      * @param userId
      * @param areaId
      * @return
      * @author shaoqiping
      * @date 2017年9月7日上午10:53:09
    */
    int deleteSpecifiedUserArea(@Param("userId")Long userId,@Param("areaIds")Long[] areaIds);
    /**
      * Description:一对多查询
      * @param userId
      * @return
      * @author shaoqiping
      * @date 2017年9月7日上午10:45:43
    */
    List<Long> selectByUserId(Long userId);
    
    AgencyAreaEntity selectByPrimaryKey(Long id);
    
    /**
     * 查询经销商区域集合
     * @param facId 厂商ID
     * @return List<AgencyAreaVo>
     */
    List<AgencyAreaVo> selectList(Long facId);
    
    @org.apache.ibatis.annotations.Select("select id as id, name as label, number as value "
    		+ "from t_agency_area where facId = #{facId} and status <> -1")
    List<com.fg.cloud.common.construction.Select> findListByFacId(Long facId);
    
    /**
     * Description:查询经销商区域，含是否选中
     * @param facId
     * @return
     * @author around
     * @date 2017年9月7日上午9:32:47
     */
    List<AgencyAreaVo> selectListByUser(@Param("facId")Long facId, @Param("userId")Long userId);
    
    List<AgencyAreaVo> selectTreeList(@Param("facId")Long facId);
    
    /**
     * Description:查询经销商区域，根据指定区域
     * @param facId
     * @param filterArea
     * @return
     * @author around
     * @date 2017年10月11日下午2:33:41
     */
    List<AgencyAreaVo> selectListByNews(@Param("facId")Long facId, 
    		@Param("filterArea")String filterArea);
    
    /**
     * 查询区域是否关联经销商
     * @param areaIds 
     * @return
     */
    @Select("select count(id) from t_agency_info where areaId = #{areaIds}")
    long selectAgencyByArea(Long areaIds);
    
    long updateStatus(@Param("id")Long id, @Param("number")String number, 
    		@Param("status")Integer status);
    
    /**
     * Description:校验
     * @param id
     * @param name
     * @return
     * @author around
     * @param facId 
     * @date 2017年8月27日下午4:50:20
     */
    long verifyUniquely(@Param("id")Long id, @Param("name")String name, 
    		@Param("facId")Long facId);
    
    /**
     * Description:根据区域名称查ID
     * @param str
     * @param facId
     * @return
     * @author dingjiang
     * @date 2017年9月22日下午2:22:11
     */
    Long selectId(@Param("str")String str, @Param("facId")Long facId);
    
    
    
    
}